#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<conio.h>
//全局变量
int bird_x,bird_y;//小鸟的坐标 
int high,width;//游戏画面尺寸 
int bar_y,bar_xtop,bar_xdown;//障碍物坐标 
int score;//

void gotoxy(int x,int y)//光标移动到（x，y） 位置 
{
	HANDLE handle = GetStdHandle (STD_OUTPUT_HANDLE);
	COORD pos;
	pos.X = x;
	pos.Y = y;
	SetConsoleCursorPosition (handle, pos);
} 





void hide()//隐藏光标 
{
	CONSOLE_CURSOR_INFO cursor_info = {1, 0};
	SetConsoleCursorInfo (GetStdHandle (STD_OUTPUT_HANDLE), &cursor_info);
} 





int starup()//游戏初始化 
{
	high=18;
	width=25;
	bird_x=0;
	bird_y=width/3;
	bar_y=width;
	bar_xtop=high/4;
	bar_xdown=high/2;
	score=0;

	hide() ;
}





void show()//游戏显示
{	
	gotoxy(0,0);//清屏 
	int i,j;
	for(i=0;i<=high+1;i++)
	{
		for(j=0;j<=width;j++)
		{
			if((i==bird_x)&&(j==bird_y))
				printf("@");//输出小鸟 
			else if((j==bar_y)&&((i<=bar_xtop)||(i>=bar_xdown)))
			{
				printf("*");//输出障碍物* 
			}
			else
				printf(" ");//显示空格 
		}
		printf("\n");
	}
	printf("得分为：%d",score); 
}





int updataWithoutInput()//用户无关设置
{	

	bird_x++; 
	if(bar_y>0)	
		bar_y--;
	else
		{
			bar_y=width;
		int randposition=rand()%(high-5);
			bar_xtop=randposition;
			bar_xdown=randposition+high/4;
		}
	if(bar_y==bird_y)
	{
		if(bird_x>bar_xtop&&bird_x<bar_xdown)
		{
			score++;
		}
		else
		{
			exit(0);
		}
	}
	Sleep(150);
}	





int updataWithInput()//用户有关设置
{
	char input;
	if(kbhit())//当按下键时执行
	{
		input=getch();
		if(input==' ')
		{
			bird_x=bird_x-2;
		}
	} 
}





int main()
{
	hide(); 
	starup();//数据初始化
	while(1)//游戏循环 
	{
		show();//游戏显示 
		updataWithoutInput();//用户无关设置 
		updataWithInput(); //用户有关设置 
	} 
	return 0; 
} 
